/*!
 * @file
 */
#ifndef INCLUDED_NTENGINE_SCENE_STRINGRENDERER_H
#define INCLUDED_NTENGINE_SCENE_STRINGRENDERER_H

namespace NTEngine
{
namespace Graphics {
class Texture;
}
namespace Math {
class Vector2;
}

namespace Scene
{
class Font;

class StringRenderer
{
public:
	static StringRenderer create( int capacity, int request );
	void add( int x, int y, const char* str, unsigned color = 0xFFFFFFFF, bool wrap = false, float z = 0.F );
	void add( const Math::Vector2& p, const char* str, unsigned color = 0xFFFFFFFF, bool wrap = false, float z = 0.F );
	void draw();
	void setFont( Font& );

	StringRenderer();
	~StringRenderer();
	StringRenderer( const StringRenderer& );
	void release();
	StringRenderer& operator=( const StringRenderer& );
	bool operator==( const StringRenderer& ) const;
	bool operator!=( const StringRenderer& ) const;
	int referenceCount() const;
	operator void*() const;
private:
	class Impl;
	Impl* m_Impl;
};

} // namespace Scene
} // namespace NTEngine

#endif // INCLUDED_NTENGINE_SCENE_STRINGRENDERER_H
// EOF